#ifndef VECTOR_INL
#define VECTOR_INL

template <typename T, ui8 col>
struct tvec;

#define _define_tvec_types( T, t ) \
  using vec##t = tvec<T, 1>;       \
  using vec2##t = tvec<T, 2>;      \
  using vec3##t = tvec<T, 3>;      \
  using vec4##t = tvec<T, 4>;

_define_tvec_types( f32, f ) _define_tvec_types( i8, b )
    _define_tvec_types( ui8, ub ) _define_tvec_types( ui32, ui )
        _define_tvec_types( i32, i ) _define_tvec_types( f64, d )
            _define_tvec_types( i64, ll ) _define_tvec_types( ui64, ull )

#undef _define_tvec_types

#endif